package com.expdatacloud.service;

import com.expdatacloud.dto.BadSkuOverThreeDaysDto;
import com.expdatacloud.dto.OverdueMaterialDto;
import com.expdatacloud.dto.UnQualifiedQualityDto;
import com.expdatacloud.vo.*;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

/**
 * @author jie
 * @date 2019/12/1 -16:16
 */
public interface ReportsService {

    /**
     * 收货预定看板
     */
    List<ReceivingBoardVo> receivingBoardList();

    /**
     * 质检未合格看板
     */
    List<UnQualifiedQualityVo> unQualifiedQualityList(UnQualifiedQualityDto unQualifiedQualityDto);

    /**
     * 质检不未合格看板
     */
    List<UnQualifiedQualityVo> qualifiedQualityList(UnQualifiedQualityDto unQualifiedQualityDto);

    /**
     * 收获日对账
     */
    List<ReceivingReconciliationVo> reconciliationList(String startTime, String endTime);

    /**
     * iqc 履历日对账统计表
     */
    List<IqcHistoryReconciliationVo> iqcHistoryReconciliationList(String startTime, String endTime);

    /**
     * IQC来料日报表
     */
    List<SuppliedMaterialsDailyVo> suppliedMaterialsList(SuppliedMaterialsDailyVo suppliedMaterialsDailyVo);

    /**
     * IQC来料周报表
     */
    Map<String, Object> suppliedMaterialsCheckWeekReportList(String startTime, String endTime, String modelName,String shipper) throws ParseException;

    /**
     * IQC来料周报表(按照物料大类)
     */
    Map<String, Object> suppliedMaterialsCheckWeekByUDF8ReportList(String startTime, String endTime, String modelName,String shipper) throws ParseException;

    /**
     * IQC来料月报
     */
    Map<String, Object> suppliedMaterialsCheckMonthReport(String startTime, String endTime,String modelKey,String shipper);

    /**
     * IQC来料检验十差/佳供应商表
     *
     * @param flag ok 十佳 否则 十差
     */
    List<SuppliedMaterialsBadTop10Vo> suppliedMaterialsBadTop10List(String flag, String time);

    /**
     * IQC来料检验十差/佳供应商表修改
     */
    int updateTop10(SuppliedMaterialsBadTop10Vo suppliedMaterialsBadTop10Vo);

    /**
     * 转换自然周
     */
    int transformDateToWeek(String time) throws ParseException;

    /**
     * 超期物料重检表
     */
    List<OverdueMaterialVo> getOverdueMaterialList(OverdueMaterialDto overdueMaterialDto);

    List<BadSkuThreeDaysVo> getBadSkuOverThreeDays(BadSkuOverThreeDaysDto badSkuOverThreeDaysDto);
}
